#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <syslog.h>

#define MAXFD 64

int daemon_init(const char *pname, int facility) 
{
	int i;
	pid_t pid;

	if ((pid = fork()) < 0)
		return (-1);
	else if (pid) 
		_exit(0);

	if (setsid() < 0)
		return (-1);
	
	signal(SIGHUP, SIG_IGN);
	
	if ((pid = fork()) < 0) 
		return (-1);
	else if (pid)
		_exit(0);

	chdir("/");

	for (i = 0; i< MAXFD; i++)
		close(i);

	open("/dev/null", O_RDONLY);
	open("/dev/null", O_RDWR);
	open("/dev/null", O_RDWR);

	openlog(pname, LOG_PID, LOG_DAEMON);

	return (0);
}

int main()
{
	daemon_init("testdaemon", 1);
	//sleep(3600);
}
